Hello ~ 昨天我們分享了JPA的常用find語法之後,今天我們就來好好完成一個CRUD的教學吧!
我們一樣以圖書館為範例,
我們在插入新的資料可以用save
的方式把資料存入資料庫,另外這邊可以注意一下,如果有對資料庫的資料有異動的時候,建議要加上@Transactional
,如果有發生異常的時候,才可以整筆進行Rollback喔!
而@Transactional
的使用也是博大精深,我們會在後面跟大家好好介紹一下!
@Transactional
public void createBook() {
Book book = new Book();
book.setBookId(999);
book.setName("Hello World");
book.setAuthor("Winnie");
bookRepo.save(book);
}
要更新資料的時候,我們要記得一定要先去查詢該本資料是否存在,如果存在之後,我們取出這筆資料來更新,這樣如果當table是有設定unique條件的時候,才不會出現duplicate的情況喔!
那update的語法我們一定要save
來進行。
@Transactional
public void updateBook(int bookId, Book book) throws BadRequestException {
Book book1 = findBookById(bookId);
if(Objects.isNull(book1)) {
throw new BadRequestException("Can not find book");
} else {
book1.setAuthor(book.getAuthor());
book1.setName(book.getName());
}
bookRepo.save(book1);
}
有兩種方法都可以執行delete的動作,第一種一樣是在service這邊寫一個method來先查詢到資料後,透過delete
語法來進行刪除資料的動作。
@Transactional
public void deleteBook(int bookId) throws BadRequestException {
Book book1 = findBookById(bookId);
if(Objects.isNull(book1)) {
throw new BadRequestException("Can not find book");
}
bookRepo.delete(book1);
}
第二種是在 Repository那層宣告,透過JpaRepository語法進行刪除資料的動作。
@Repository
public interface BookRepo extends JpaRepository<Book, Integer> {
void deleteById(Integer bookId);
}
昨天和今天的介紹就是Spring data JPA的使用方式,讓我們減少了編寫重複程式碼的工作,使用上也變得更加方便吧!!!!!